#include "db.h"
#include "muduo/base/Logging.h"
using namespace muduo;

static string server = "127.0.0.1";
static string username = "root";
static string password = "123456";
static string dbname = "chat";
MySQL::MySQL()
{
    _conn = mysql_init(nullptr);
}
MySQL::~MySQL()
{
    if (_conn != nullptr)
        mysql_close(_conn);
}
// 连接数据库
bool MySQL::connect()
{
    MYSQL *p = mysql_real_connect(_conn, server.c_str(), username.c_str(),
                                  password.c_str(), dbname.c_str(), 3306, nullptr, 0);
    if (p != nullptr)
    {
        // C/C++ 代码默认的辫子字符是ascii ,，如果不设置，从MYSQL中取出的数据会乱码
        mysql_query(_conn, "set names gbk");
        LOG_INFO << __FILE__ << ":" << __LINE__ << "connect success";
    }else
    {
        LOG_INFO << __FILE__ << ":" << __LINE__ << "connect failed";
    }
    return p;
}
// 更新操作
bool MySQL::update(string sql)
{
    if (mysql_query(_conn, sql.c_str()))
    {
        LOG_INFO << __FILE__ << ":" << __LINE__ << "update failed, sql:" << sql << "更新失败！";
        return false;
    }
    return true;
}
MYSQL_RES *MySQL::query(string sql)
{
    if (mysql_query(_conn, sql.c_str()))
    {
        LOG_INFO << __FILE__ << ":" << __LINE__ << "query failed, sql:" << sql << "查询失败";
        return nullptr;
    }
    return mysql_store_result(_conn);
}

MYSQL* MySQL::getConn()
{
    return _conn;
}